package Shifu.Login;

import java.sql.*;
import java.rmi.Remote;
import java.rmi.RemoteException;
import Shifu.MainServer.Net.SeederShellPeerServer;
import Shifu.MainServer.Net.LeecherShellPeerServer;

/**
 * Interfaccia per il Server di Login 
 */
public interface LoginInterface extends Remote {

	/**
	* Esegue il login per un peer di tipo Seeder
	* @param username username del peer
	* @param password la password del peer
	* @return null se il login non ha un buon esisto, un remotePeerServer se ha esisto positivo
	* @exception RemoteException  se avvengono dei problemi di comunicazione tra client e Login Server
	*/

	public SeederShellPeerServer loginSeeder(String username,String password) throws RemoteException,SQLException;

	/**
	* Esegue il login per un peer di tipo Leecher
	* @param username username del peer
	* @param password la password del peer
	* @return null se il login non ha un buon esisto, un remotePeerServer se ha esisto positivo
	* @exception RemoteException  se avvengono dei problemi di comunicazione tra client e Login Server
	*/

	public LeecherShellPeerServer loginLeecher(String username,String password) throws RemoteException,SQLException;

	/**
	* Esegue la registrazione di un peer di tipo Leecher
	* @param username username del peer
	* @param password la password del peer
	* @return true se la registrazione ha un buon esisto, false altrimenti
	* @exception RemoteException  se avvengono dei problemi di comunicazione tra client e Login Server
	*/

	public boolean registratePeer(String username,String password) throws RemoteException,SQLException;

	/**
	* Esegue la cancellazione di un peer
	* @param username username del peer
	* @param password la password del peer
	* @return true se la cancellazione ha un buon esisto, false altrimenti
	* @exception RemoteException  se avvengono dei problemi di comunicazione tra client e Login Server
	*/

	public boolean removePeer(String username,String password) throws RemoteException,SQLException;

}
